Micron Document
πŸŽ–οΈGitΠ―Ρ€Π°πŸŽ–οΈ

Node / meshtastic / Meshtastic-Android / files / docs / ht-rHT / user / messages-and-channels.md

Displaying Rendered β€’ View raw β€’ Download

docs/ht-rHT/user/messages-and-channels.md renovate/spotless (0926a27d) Text, 22.81 KB

title: Messages & Channels
parent: User Guide
nav_order: 3
last_updated: 2026-08-30
description: Send and receive messages, manage channels, configure encryption, search conversations, and use quick chat, reactions, and message actions.
aliases:
β€’ channels
β€’ direct-messages
β€’ messaging
β€’ conversations

Messages & Channels

Meshtastic supports two communication modes: channel broadcasts and direct messages.

Channels

Channels are shared communication groups. All nodes configured with the same channel key can read and send messages on that channel.

Default Channel

Every Meshtastic radio comes with a default LongFast channel. It is encrypted with a well-known default key, so anyone running Meshtastic on the same preset can read it.

Channel Security

Each channel carries a lock icon that shows how well it is protected. Tap the icon to see the same explanation inside the app.

β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚ Icon β”‚ What it means β”‚
β”œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€
β”‚ Green closed lock β”‚ The channel is securely encrypted, with either a 128-bit o… β”‚
β”‚ Yellow open lock β”‚ The channel is not securely encrypted β€” it uses no key at … β”‚
β”‚ Red open lock β”‚ Not securely encrypted, and the channel carries precise lo… β”‚
β”‚ Red open lock with a warning badge β”‚ Not securely encrypted, carrying precise location data, an… β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜

Key length alone does not change the icon: a 128-bit key and a 256-bit key both show the green lock.

β”‚ πŸ”’ Security: Always configure a unique PSK for private communications. The default channel is
β”‚ intentionally open so new users can discover the mesh β€” but you should create a separate
β”‚ encrypted channel for anything sensitive.

Adding a Channel

1. Connect to your radio. The Channels row stays grayed out until the app has a connection β€” see Connections.
2. Go to Settings, then tap Channels under Configuration.
3. Tap the + button to add a channel. The editor opens on the new entry.
4. Set the channel name and the PSK, and choose whether the channel uses MQTT uplink and downlink. Naming a new channel generates a fresh 256-bit key for you; the refresh icon beside PSK generates another one.
5. Tap Save to close the editor. The change is still only on your phone.
6. Tap Send at the bottom of the channel list to write the changes to the radio. Cancel, or leaving the screen without tapping Send, throws them away.
7. Optional: share the channel URL or QR code with the people who need access.

Tapping an existing channel opens the same editor, where you can change the name, the PSK, MQTT uplink and downlink, and position precision. Every edit on this screen β€” adding, editing, deleting, or dragging a channel into a new order β€” waits on Send the same way.

Direct Messages

Direct messages (DMs) go to one specific node. When both radios hold each other's public keys, your radio encrypts the message to that node's public key, so no one else on the mesh can read it β€” not even nodes that share your channel.

Your radio must already hold the other node's public key before it can send a DM. Keys travel inside node info, which nodes broadcast periodically, so the key usually arrives on its own once you have heard from that node. Until it does, a radio that has its own key pair β€” the default β€” refuses the send rather than falling back to channel encryption, and the message shows Recipient key unavailable.

A public-key conversation carries a key icon in its top bar. A green closed lock means the direct message is protected by public-key encryption; a red key-off icon means the node's public key changed and no longer matches the one your radio stored. Tap the icon for the details.

Sending a Direct Message

1. Open the Messages tab.
2. Select a conversation, or tap a node in the node list.
3. Type your message and tap Send.

Managing the Conversation List

The Messages tab lists your conversations. Each row shows what you need at a glance, and you
can act on it directly:

β€’ Unsent drafts survive. Type into a conversation and leave without sending, and the text is
still there when you come back. The row shows it as T383838Draft: … in place of the last message β€”
an unsent draft is the thing the row is waiting on you for.
β€’ Unread badge. A count sits on the row until you open the conversation.
β€’ Swipe right to mute (swipe again to unmute) and swipe left to delete. Deleting asks
first; muting shows a snackbar with Undo.
β€’ Touch & hold to select one or more conversations, then use the action bar to Pin,
Mark unread, mute or delete them together. Pinned conversations carry a pin marker and rise
to the top of their own section.
β€’ The list is split into Channels and Direct Messages, each with a collapsible header and each
sorted independently β€” so a pinned direct message rises within its own section, not above the
Channels one.

Conversation Bubbles

On Android 11 and later, a message notification can be opened as a floating bubble that
stays on top of whatever else you are doing. Tap the bubble icon on the notification to promote
a conversation; Android remembers the choice per conversation, and the system Bubbles settings
control whether they are offered at all.

Message States

A status label appears under your own outgoing messages only (incoming messages from others show no status label):

β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚ State β”‚ Meaning β”‚
β”œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€
β”‚ Sending… β”‚ Queued or already handed to the radio, not yet resolved e… β”‚
β”‚ Delivered to recipient β”‚ The strongest confirmation for a direct message β€” an ackn… β”‚
β”‚ Delivered to mesh β”‚ For a channel broadcast, the message reached the mesh (br… β”‚
β”‚ Relayed, not confirmed by recipient β”‚ For a direct message, shown in a warning color β€” the mess… β”‚
β”‚ Routing via SF++ chain… β”‚ Being routed/buffered by the Store & Forward Plus Plus ch… β”‚
β”‚ Confirmed on SF++ chain β”‚ Confirmed delivered via the SF++ chain β”‚
β”‚ ErΓ¨ β”‚ Delivery failed β€” tap the status for the specific reason … β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜

Delivery Errors

When a message fails to deliver, the error indicator shows what went wrong:

β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚ ErΓ¨ β”‚ Me… β”‚ What to Do β”‚
β”œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€
β”‚ Pa gen wout β”‚ No… β”‚ The recipient may be offline or out of mesh range. Try… β”‚
β”‚ No radio interface β”‚ No… β”‚ Check that your radio is connected and available. β”‚
β”‚ Failed to deliver to mesh β”‚ Re… β”‚ Move closer, improve signal, or wait for conditions to… β”‚
β”‚ Rate limited β”‚ Th… β”‚ Wait before sending again. β”‚
β”‚ Not authorized β”‚ Th… β”‚ Check you have the right channel and keys for that nod… β”‚
β”‚ Recipient needs your key β”‚ Di… β”‚ Exchange node info β€” the key travels with it. Common o… β”‚
β”‚ Recipient key unavailable β”‚ Yo… β”‚ Wait for their node info to arrive, or ask them to bro… β”‚
β”‚ Could not send encrypted message β”‚ En… β”‚ Verify both nodes have exchanged keys and are on compa… β”‚
β”‚ Admin session expired β”‚ A … β”‚ Reopen the remote node's settings to start a new sessi… β”‚
β”‚ Admin key not authorized β”‚ Th… β”‚ Verify the admin key matches on both nodes. β”‚
β”‚ Channel/key mismatch β”‚ De… β”‚ Verify both nodes share the same channel and PSK. β”‚
β”‚ Message is too large to send β”‚ Me… β”‚ Shorten the message and try again. β”‚
β”‚ No app response β”‚ Ap… β”‚ Retry or check the destination app or module state. β”‚
β”‚ Duty cycle limit β”‚ Re… β”‚ Wait for the duty cycle window to reset. β”‚
β”‚ Invalid request β”‚ Ma… β”‚ Retry after updating or restarting the app if this per… β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜

β”‚ πŸ’‘ Tip: Most delivery errors resolve themselves. If a node is intermittently reachable, the mesh
β”‚ will retry. For persistent No route errors, check that intermediate Router nodes are online.

Message Features

Quick Chat

Pre-configured messages for rapid communication, useful when typing is impractical (gloves, small screen, urgent):

β€’ The quick chat row is hidden until you turn it on. Open a conversation, tap the overflow menu in the top bar, then tap Show quick chat menu. Hide quick chat menu puts the row away again.
β€’ The row carries one built-in entry, the πŸ”” alert bell. It appends an alert message that includes a bell character, which clients that support it flag as an alert. Every other button on the row is one you created.
β€’ Add, edit, reorder, and delete your own entries from the same overflow menu β€” tap Quick chat options.


Each quick chat entry has a Name β€” the button label, capped at five characters, forced to uppercase, and filled in for you from the message text β€” and the Message it carries. A switch decides what tapping the button does. A new entry starts on Instantly send, so a tap sends the message straight away; turn the switch off and the label changes to Append to message, which puts the text in the input field for you to edit first.


Searching Messages

You can search the full history of any conversation directly from the chat screen:

1. Open a conversation (a channel or a direct message).
2. Tap the search icon in the top bar.
3. Type into the Search messages… field. The search runs as you type, across all stored messages in that conversation.
4. Use the N / M result counter and the previous / next arrows to jump between matches, which are highlighted in the conversation.


β”‚ πŸ’‘ Tip: Search is full-text and stays within the conversation you opened it from β€” it doesn't
β”‚ search across other channels or contacts. It matches against the messages already stored on your
β”‚ device, so it works fully offline.

Message Bubbles

Messages appear as chat bubbles β€” sent messages on the right, received messages on the left. Each bubble shows the sender, timestamp, and delivery status. Messages with replies include a quoted preview of the original message above the response.

Text Formatting

Messages support lightweight inline Markdown. Received messages render the styling with the syntax characters removed:

β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚ Type β”‚ Syntax β”‚ Renders as β”‚
β”œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€
β”‚ Bold β”‚ T383838**bold** β”‚ bold β”‚
β”‚ Italic β”‚ T383838*italic* β”‚ italic β”‚
β”‚ Strikethrough β”‚ T383838~~strike~~ β”‚ ~~strike~~ β”‚
β”‚ Inline code β”‚ BT383838 codeT383838 β”‚ monospace T383838code β”‚
β”‚ Link β”‚ T383838LINK0 β”‚ a tappable label β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜


When composing, focus the message field and type at least three characters to reveal a formatting toolbar below the input. Select text and tap a style to wrap it (tap again to remove it); with no selection, a style inserts an empty pair with the cursor between the markers. The link button opens a dialog to enter a URL. As you type, the field shows the styled text, but the message you send still contains the Markdown characters.

β”‚ πŸ’‘ Tip: Formatting is carried as literal characters on the mesh β€” the same bytes iOS sends.
β”‚ Clients that don't support Markdown (older apps, plain firmware clients) will show the raw T383838**/T383838~~
β”‚ characters. URLs, email addresses, and phone numbers are still auto-linked whether or not you use
β”‚ Markdown.

Mentions

Type T383838@ while composing to mention a node β€” a picker suggests matching contacts as you type. In a received message, a mention appears as a highlighted chip showing the node's name; tap it to jump straight to that node's detail page.

Reactions

React to messages with emoji:

β€’ Touch & hold a message β€” or double-tap it β€” to raise a quick reaction bar above the bubble. Opening the bar sends nothing.
β€’ Tap an emoji in the bar to send it; tap More reactions to open the full picker, or anywhere outside
the bar to dismiss it without sending. A reaction is a real mesh packet, so it only goes out
when you pick an emoji.
β€’ Reactions appear below the message bubble
β€’ Multiple users can react to the same message
β€’ React to your own messages or others' messages


β”‚ πŸ’‘ Tip: Reactions are lightweight β€” they use minimal mesh bandwidth compared to full text
β”‚ messages.

Replying

Swipe a message to the right to reply to it β€” the composer opens with that message quoted.
Swiping past the reply threshold arms the action; releasing before it springs back with nothing sent.
Reply is also in the actions sheet, reached by touching & holding and then tapping More message actions.

Day Separators

Messages are grouped by day. The separator above the first message of each day reads Today
or Yesterday for the two most recent days, and the date itself for older ones.

Jump to Latest

Scrolling back through a conversation raises a jump-to-latest control. When messages arrive
while you are scrolled up, it names the most recent sender and adds a count of the other unread
messages. That count is messages, not people β€” five unread from one person reads as their name
+4.

Message Actions

Touch & hold or double-tap a message to open the quick reaction bar, then tap More message actions
(the overflow icon on that bar) to open the actions sheet. The emoji row runs across the top of the
sheet β€” that is where reactions live β€” and beneath it, along with the message's timestamp and
delivery status, are:

β€’ Reply β€” quote the message in your response
β€’ Copy β€” copy the message text to the clipboard
β€’ Translate β€” translate a received message into your device language, and toggle between the original and translated text (Google Play build only; uses on-device translation). The first translation into a language asks to download a one-time language model and tells you its size, then translates once the download finishes. If the download fails, or the message is already in your language, the app says so instead of translating
β€’ Select β€” start multi-select, so you can act on several messages at once
β€’ Delete β€” remove the message from this phone. It works on any message in the conversation, yours or not, and does not remove it from anyone else's radio or phone

Message Priority

The app sends every message you compose at the same, default priority β€” there is no
emergency or alert tier to choose, and nothing in the app raises a direct message above a
channel broadcast. Any prioritising between them happens in firmware, not here. (The app
does mark some of its own internal traffic, such as admin and traceroute packets, as
reliable or background, but that is not something you control from the message composer.)

Message Limits

β€’ Maximum length: 200 bytes (approximately 200 characters for ASCII text)
β€’ The 200-byte cap applies to the in-app composer β€” the mesh payload limit itself is 233 bytes, so messages from other senders (e.g., App Functions) may arrive slightly longer
β€’ Rate limiting: The mesh enforces airtime fairness; heavy message volume may be throttled
β€’ Delivery: Messages are retried automatically if no acknowledgment is received

Best Practices

β€’ Use channels for group coordination
β€’ Use direct messages for private person-to-person communication
β€’ Keep messages short β€” mesh bandwidth is limited
β€’ Configure encryption for sensitive communications

Related Topics

β€’ Nodes β€” tap a node to start a direct message
β€’ Settings β€” Radio & User β€” configure channel encryption and presets
β€’ MQTT β€” bridge channel messages to the internet
β€’ Channel configuration β€” detailed channel settings on meshtastic.org

Served by rngit 1.5.2 - Generated in 0.16s